package org.cloudplatform.common.feign.model;

import lombok.Data;

import java.net.URI;
import java.util.Map;

/**
 * 类描述：用于存储注册中心服务实例的信息
 * 作者：徐卫超 (cc)
 * 时间 2022/5/13 17:42
 */

@Data
public class Instance {

    /**
     * 实例ID
     */
    private String instanceId;
    /**
     * 服务ID(服务名称)
     */
    private String serviceId;
    /**
     * 服务的host信息
     */
    private String host;
    /**
     * 服务的port的信息
     */
    private int port;
    /**
     * 是否是https服务
     */
    private boolean secure;
    /**
     * 服务的原信息
     */
    private Map<String, String> metadata;

    /**
     * 服务器的URI信息 是 (http|https)://host:port的信息
     */
    private URI uri;

    public void getUri(Instance instance) {
        String scheme = (instance.isSecure()) ? "https" : "http";
        String uri = String.format("%s://%s:%s", scheme, instance.getHost(), instance.getPort());
        instance.uri = URI.create(uri);
    }

    public URI getUri() {
        if (this.uri == null) {
            getUri(this);
        }
        return this.uri;
    }
}
